From 51f34d5b1d9420aa771e07cc66cfd282b287a4f0 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Tue, 13 Oct 2026 12:08:50 +0200 Subject: [PATCH] vtkGLTFImporter: Fix invalid access for CVE-2025-57109 Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/79375066e52db70e61dbaef7d941d642daf2dc09 Bug-Debian: https://bugs.debian.org/1119824 Gbp-Pq: Name cve_2025_57109.patch --- IO/Import/vtkGLTFImporter.cxx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/IO/Import/vtkGLTFImporter.cxx b/IO/Import/vtkGLTFImporter.cxx index 73e83517c..9c99df74f 100644 --- a/IO/Import/vtkGLTFImporter.cxx +++ b/IO/Import/vtkGLTFImporter.cxx @@ -649,6 +649,13 @@ void vtkGLTFImporter::ImportActors(vtkRenderer* renderer) // Get current node const int nodeId = nodeIdStack.top(); nodeIdStack.pop(); + if (nodeId < 0 || nodeId >= static_cast(model->Nodes.size())) + { + vtkErrorMacro("Invalid node index: " << nodeId << " , aborting."); + this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); + return; + } + const auto& node = model->Nodes[nodeId]; // Add this node into the scene hierarchy @@ -670,7 +677,7 @@ void vtkGLTFImporter::ImportActors(vtkRenderer* renderer) { if (node.Mesh >= static_cast(model->Meshes.size())) { - vtkErrorMacro("Invalid node mesh index, aborting."); + vtkErrorMacro("Invalid node mesh index: " << node.Mesh << " , aborting."); this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); return; } @@ -835,6 +842,14 @@ void vtkGLTFImporter::ImportCameras(vtkRenderer* renderer) // Get current node int nodeId = nodeIdStack.top(); nodeIdStack.pop(); + + if (nodeId < 0 || nodeId >= static_cast(model->Nodes.size())) + { + vtkErrorMacro("Invalid nodeId: " << nodeId << ", aborting."); + this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); + return; + } + const vtkGLTFDocumentLoader::Node& node = model->Nodes[nodeId]; // Import node's camera -- 2.39.5